package com.ouc.eddyAlgorithm.dao;

import com.ouc.common.entity.NcData;
import ucar.ma2.InvalidRangeException;
import ucar.nc2.NetcdfFile;
import ucar.nc2.Variable;

import java.io.IOException;
import java.util.Map;

/**
 * @author B504
 * @date 2023/2/1
 * @apiNote
 */
public interface PetNcDao {
  /**
   * 通过开始索引和结束索引确定pet的nc文件中的数据段
   * 减少过大数据的加载防止GC
   *
   * @param variable   变量
   * @param startIndex 开始索引，为null认为从0开始
   * @param endIndex   结束索引，为null认为到最后
   * @return
   * @throws IOException
   * @throws InvalidRangeException
   */
  NcData getPetNcData(Variable variable, Integer startIndex, Integer endIndex) throws IOException, InvalidRangeException;

  /**
   * 获取所有变量的信息（仅支持pet的nc文件）
   *
   * @param ncFile     nc文件
   * @param startIndex 开始索引，为null认为从0开始
   * @param endIndex   结束索引，为null认为到最后
   * @return
   */
  Map<String, NcData> getPetNcDataToMap(NetcdfFile ncFile, Integer startIndex, Integer endIndex);
}
